/*
    根据数据量猜解法的技巧-天字第一号重要技巧

    前置知识 : 讲解007-时间复杂度、讲解038-全排列递归代码的执行细节

    一个基本事实
    C/C++运行时间1s，java/python/go等其他语言运行时间1s~2s，
    对应的常数指令操作量是 10^7 ~ 10^8，不管什么测试平台，不管什么cpu，都是这个数量级
    所以可以根据这个基本事实，来猜测自己设计的算法最终有没有可能在规定时间内通过

    运用 根据数据量猜解法技巧 的必要条件：
    1，题目要给定各个入参的范围最大值，正式笔试、比赛的题目一定都会给，面试中要和面试官确认
    2，对于自己设计的算法，时间复杂度要有准确的估计

    这个技巧太重要了！既可以提前获知自己的方法能不能通过，也可以对题目的分析有引导作用！

    ================================================

    问题规模和可用算法
                    logn      n      n*logn      n*根号n      n^2      2^n      n!
    
    n <= 11          Yes      Yes      Yes         Yes        Yes      Yes      Yes
    n <= 25          Yes      Yes      Yes         Yes        Yes      Yes      No
    n <= 5000        Yes      Yes      Yes         Yes        Yes      No       No
    n <= 10^5        Yes      Yes      Yes         Yes        No       No       No
    n <= 10^6        Yes      Yes      Yes         No         No       No       No
    n <= 10^7        Yes      Yes      No          No         No       No       No
    n >= 10^8        Yes      No       No          No         No       No       No

    上面每个复杂度，课上都讲过类似的过程了。
    除了 n*根号n，这个复杂度常出现在“莫队算法”能解决的相关题目里，后续的【挺难】课程会有系统讲述
    这张表其实作用有限
    因为时间复杂度的估计很多时候并不是一个入参决定，可能是多个入参共同决定。比如O(n*m), O(n+m)等
    所以最关键的就是记住常数指令操作量是 10^7 ~ 10^8，然后方法是什么复杂度就可以估计能否通过了

    ================================================

    题目1 : 最优的技能释放顺序

    现在有一个打怪类型的游戏，这个游戏是这样的，你有n个技能
    每一个技能会有一个伤害，
    同时若怪物小于等于一定的血量，则该技能可能造成双倍伤害
    每一个技能最多只能释放一次，已知怪物有m点血量
    现在想问你最少用几个技能能消灭掉他(血量小于等于0)
    技能的数量是n，怪物的血量是m
    i号技能的伤害是x[i]，i号技能触发双倍伤害的血量最小值是y[i]
    1 <= n <= 10
    1 <= m、x[i]、y[i] <= 10^6

    ================================================

    题目2 : 超级回文数的数目

    如果一个正整数自身是回文数，而且它也是一个回文数的平方，那么我们称这个数为超级回文数。
    现在，给定两个正整数 L 和 R （以字符串形式表示），
    返回包含在范围 [L, R] 中的超级回文数的数目。
    1 <= len(L) <= 18
    1 <= len(R) <= 18
    L 和 R 是表示 [1, 10^18) 范围的整数的字符串

*/